# script f??r die Kursdaten aus StruFu Pflanzen von Prof. Dr. Uwe Nehls
# bitte den DAtenpfad an Ihren Rechner anpassen!
NehlsData <- read.table(file="~/Documents/Teaching/StatsBachelor/BotanikStrufuData.txt", header=T)
head(NehlsData)
# wir haben jetzt gerade die Daten eingelesen und uns die ersten 6 Zeilen angesehen. 
# Es geht hierbei um Raten, die vermutlich nicht normalverteilt sind
plot(NehlsData$Konzentration, NehlsData$Rate)
# am plot erkennt man, dass die beste Anpassunglinie vermutlich etwas S-f??rmig ist
qqnorm(NehlsData$Rate)
qqline(NehlsData$Rate)
# die Daten sind nicht gut normalverteilt
# wir machen jetzt zweierlei. 
# 1. eine Anpassunglinie, ohne dass wir die Daten korrigieren (aber die ist nat??rlich nicht gut!!!)
# 2. eine Anpassunglinie f??r transformierte Daten
# 1.
plot(NehlsData$Konzentration, NehlsData$Rate, ylab="Plasmolyserate (%)", xlab="Konzentration (M)", las=1)
abline(lm(NehlsData$Rate~NehlsData$Konzentration), lwd=2)
# Damit ist der plot erledigt und sieht auch halbwegs brauchbar aus

# 2.
# zun??chst f??rgen wir eine Spalte mit transformierten Werten ein.
# dazu m??ssen wir die Raten zun??chst in proportionale Werte verwandeln (/100)
# dann folgt die Arcus Sinus Quadratwurzel-Transformation
NehlsData$Proportion <- NehlsData$Rate/100
NehlsData$TransRate <- asin(sqrt(NehlsData$Proportion))
qqnorm(NehlsData$TransRate)
qqline(NehlsData$TransRate)
# noch nicht super, aber schon besser verteilt
plot(NehlsData$Konzentration, NehlsData$TransRate, ylab="Plasmolyserate (transformiert)", xlab="Konzentration (M)", las=1)
abline(lm(NehlsData$TransRate~NehlsData$Konzentration), lwd=2)
# Hier sollte in der Abbildungsunterschrift (bitte beachten: Abbildungen haben Unterschriften, Tabellen ??berschriften)
# erw??hnt werden, dass die Raten durch 100 geteilt und dann Arcus-Sinus-Quadratwurzel-transformiert wurden!

# hier probieren wir noch eine Grafik, die nicht die Originalwerte der Einzelmessungen enth??lt,
# sondern die Mittelwerte plus Standardabweichung
# zu beachten ist hier, dass eine Mittelwertbildung der Einzeldaten bei niedrigen (nahe 0)
# und hohen Raten (nahe 100) ??u??erst fragw??rdig ist, weil die Daten nach unten bzw. oben begrenzt
# sind und die Daten dort nicht normalverteilt um den Mittelwert sein k??nnen
# man beachte die entsprechenden Vorlesungsfolien zu schiefen Verteilungen
# wieder beginnen wir mit den untransormierten Daten
RateKonz <- tapply(NehlsData$Konzentration, list(NehlsData$Konzentration), mean)
RateMeans <- tapply(NehlsData$Rate, list(NehlsData$Konzentration), mean)
RateSD <- tapply(NehlsData$Rate, list(NehlsData$Konzentration), sd)
RateSDminus <- RateMeans - RateSD
RateSDplus <- RateMeans + RateSD
# wir k??nnten versuchen, die Punkte mit SD- error bar mit lineplot.CI zu machen, jedoch k??nnen wir
# dann keine Anpasunglinie mehr einf??gen, da die x-Achse mit Faktoren und nicht kontinuierlichen Zahlen aufgebaut ist
require(sciplot)
NehlsData$Gruppe <- factor(NehlsData$Konzentration)
lineplot.CI(Konzentration, Rate, data = NehlsData, lty="blank", 
            xlab = "Konzentration (M)", ylab = "Plasmolyserate (%)", cex.lab = 1.5, 
            col = "blue", ci.fun= function(x) c(mean(x)-sd(x), mean(x)+sd(x)))
# deshalb nehmen wir gplots
Achtung!!! Zuerst Paket gplots installieren.
require(gplots)
plotCI(x = RateKonz, y = RateMeans, err='y', 
       type="p", col="blue", barcol="blue",
       sfrac = 0.01, gap=0, lwd=2,
       lty="solid", labels=FALSE, xlab = "Konzentration (M)", ylab = "Plasmolyserate (%)", 
       li=RateSDminus, ui=RateSDplus)
# nun k??nnen wir in die Grafik eine Trendlinie einf??gen.
# beachte, diese TRandlinie kann entweder auf den Einzeldatenpunkten beruhen (statistisch richtiger)
# oder aber auf den Mittelwerten
abline(lm(NehlsData$Rate~NehlsData$Konzentration), lwd=2, col="blue")
#abline f??r Mittelwerte
abline(lm(RateMeans~RateKonz), lwd=2, col="red")

# und nun der Plot f??r die transfoermierten Daten
TransRateMeans <- tapply(asin(sqrt(NehlsData$Rate/100)), list(NehlsData$Konzentration), mean)
TransRateSD <- tapply(asin(sqrt(NehlsData$Rate/100)), list(NehlsData$Konzentration), sd)
TransRateSDminus <- TransRateMeans - TransRateSD
TransRateSDplus <- TransRateMeans + TransRateSD
plotCI(x = RateKonz, y = TransRateMeans, err='y', 
       type="p", col="blue", barcol="blue",
       sfrac = 0.01, gap=0, lwd=2,
       lty="solid", labels=FALSE, xlab = "Konzentration (M)", ylab = "Plasmolyserate (transformiert)", 
       li=TransRateSDminus, ui=TransRateSDplus)
abline(lm(NehlsData$TransRate~NehlsData$Konzentration), lwd=2, col="blue")

# Viel Vergn??gen, Thomas Hoffmeister
